package com.sky.controller;

import com.sky.constant.MessageConstant;
import com.sky.constant.ShopConstant;
import com.sky.constant.StatusConstant;
import com.sky.result.Result;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*;

/**
 * 店铺web控制器
 *
 * @Author Vsunks.v
 * @Date 2023/5/5 14:41
 * @Blog blog.sunxiaowei.net/996.mba
 * @Description: 店铺web控制器
 */
@Slf4j
@RestController
// @RequestMapping("/admin/shop")
public class ShopController {


    @Autowired
    RedisTemplate redisTemplate;

    /**
     * 设置店铺状态。
     *
     * @param status 目标状态：1表示营业中，0表示打烊
     * @return
     */
    @PutMapping("/admin/shop/{status}")
    public Result setStatus(@PathVariable Integer status) {
        // 记录日志
        log.info("设置店铺状态为：{}", StatusConstant.ENABLE.equals(status) ? "营业中" : "打烊中");

        // 参数校验
        if (ObjectUtils.notEqual(StatusConstant.DISABLE, status) &&
                ObjectUtils.notEqual(StatusConstant.ENABLE, status)) {
            return Result.error(MessageConstant.ARGS_ERROR);
        }

        // 调用redisTemplate设置状态，并给出响应
        redisTemplate.opsForValue().set(ShopConstant.SHOP_STATUS, status);
        return Result.success();
    }

    /**
     * 获取店铺的营业状态
     *
     * @return 店铺的营业状态，1表示营业中，0表示打烊
     */
    // /admin/shop/status /user/shop/status
    @GetMapping({"/admin/shop/status","/user/shop/status"})
    public Result<Integer> getStatus() {

        // 参数校验 无

        // 调用redisTemplate设置状态，并给出响应
        Integer status = (Integer) redisTemplate.opsForValue().get(ShopConstant.SHOP_STATUS);

        // 记录日志
        log.info("获取店铺营业状态成功。当前店铺营业状态为：{}",StatusConstant.ENABLE.equals(status)?"营业中":"打烊中");

        return Result.success(status);
    }

}
